package com.yxym.arrays_;

import java.util.Arrays;
import java.util.Comparator;

public class ArraysMethod01 {
    public static void main(String[] args) {
        Integer [] integers = {10,20,-5,30};
        //遍历数组
//        for (int i = 0; i < integers.length; i++) {
//            System.out.println(integers[i]);
//
//        }
        //System.out.println(Arrays.toString(integers));
        //演示sort方法
        //1.直接使用冒泡排序，也可以直接使用Arrays提供的sort方法
        //2.数组为引用类型，通过sort排序方法后直接影响实参的integers
        //3.sort重载的，也可以通过传入一个接口Comparator实现定制排序
        Arrays.sort(integers);
        System.out.println("====排序后====");
        System.out.println(Arrays.toString(integers));
        //4.调用定制排序时，传入了两个参数（1）排序数组integers
        //（2）实现接口Comparator的匿名内部类，实现方法compare
        //5.体现接口编程的方式
        //（1）Arrays.sort(integers, new Comparator()
        //（2）到TimSort类的private static <T> void sort(T[] a, int lo, int hi, Comparator<? super T> c,
        //                         T[] work, int workBase, int workLen)
        //(3)再到binarySort方法的
        //            while (left < right) {
        //                int mid = (left + right) >>> 1;
        //                if (c.compare(pivot, a[mid]) < 0)
        //                    right = mid;
        //                else
        //                    left = mid + 1;
        //            }
        //（4）public int compare(Object o1, Object o2)返回的值>0,还是<0
        Arrays.sort(integers, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Integer i1 = (Integer) o1;
                Integer i2 = (Integer) o2;
                return i1 - i2;
            }
        });
        System.out.println("===再次排序后===");
        System.out.println(Arrays.toString(integers));//

    }
}
